Method and apparatus for accelerating forwarding in software-defined networks

ABSTRACT

A network element acting as a forwarding plane within a software-defined network to reduce negative effects of slow-path packet processing is described. The network element, upon receiving a first packet, determines whether it matches any flow entry within a set of flow tables. When the first packet does not match any flow entry of the set of flow tables, the network element performs a miss procedure including inserting at least a portion of the first packet into a packet miss table of the network element, which is accessed by a controller. The controller may access the packet miss table using a pull mechanism. The miss procedure may also include accessing a configurable default rule table of the network element, which includes rules enabling limited forwarding for those packets that do not match any entry of the set of flow tables.

FIELD

Embodiments of the invention relate to the field of networking; and morespecifically, to accelerating forwarding in software-defined networks.

BACKGROUND

In recent years, traditional circuit-based communication networks havedeclined in favor of packet-based networks, which can be more flexible,efficient, and secure. As a result, the increased popularity ofpacket-based networking has led to growth in demand for packet-basednetwork devices. This demand has largely been met by manufacturers, whohave created larger and larger monolithic routers to handle an increasedvolume and complexity of network traffic. However, this model isapproaching its technologic and economic limits. It is increasinglydifficult to fulfill the increasing performance requirements withtraditional router designs, and, with the emergence of low cost datacenter hardware, router vendors have difficulty justifying the highercosts of hardware for the same performance. At the same time, thedemands on the routing and switching control plane in access andaggregation networks are becoming more complex. Operators desire theability to customize routing to handle specific types of traffic flowsnear the edge, configure customized services that span aggregationnetworks, and achieve multi-layer integration, without the detailedlow-level configuration required in today's networks.

These trends led to a different approach to routing architecture inwhich data and control planes have been decoupled. With this separation,the control plane may be logically centralized and implemented with avariety of hardware components with varied architectures. Further, thedata plane may consist of simplified switch/router elements configuredby the logically centralized controller. This new split-architecturemodel focuses on the split of control from forwarding and dataprocessing elements and is at the core of software-defined networking(SDN). One prominent standard for flow processing in software-definednetworks is OpenFlow, which defines the protocols used to transportmessages between the control plane and the forwarding plane anddescribes a model for packet processing.

This split-architecture of software-defined networks enables aseparation between functionalities that can be logically or physicallygrouped together. For example, there can be a split or separationbetween a common control entity and a network application (e.g.,Generalized Multi-Protocol Label Switching (GMPLS), Border GatewayProtocol (BGP), Internet Protocol Security (IPSec), etc.). Similarly,there can be a split or separation between control andforwarding/processing (i.e. a separation of central control from networkdevices performing packet processing). There also can be a split orseparation of a data forwarding functionality, a data processingfunctionality, and a data generation functionality (e.g., Deep PacketInspection (DPI); Ciphering; Operations, administration and management(OAM); etc.).

Software-defined networks present many advantages over traditionalmonolithic architecture networks. For example, the control planeapplications that implement important network routing and switchingfunctionalities are completely separated from the forwarding plane.Thus, maintaining a centralized control plane enables highly customizedand optimized networking services that can be tailored to specific userneeds. A centralized control plane provides a highly scalable, reliable,and flexible networking infrastructure that can cater to diverse userneeds. The forwarding plane (or data plane) devices can be inexpensiveand interchangeable commodity networking devices, which reduces theoverall configuration and maintenance burdens for the user.Additionally, a single management and configuration entity for theentire network enhances the ease-of-use experience for users.

However, current SDN configurations also suffer from shortcomings. Whilesystems such as OpenFlow do present valid ways to specify a model forpacket processing, a problem exists in that different or novel trafficreceived at the forwarding plane cannot be processed until the controlplane provides the forwarding device with instructions for that traffic.Accordingly, when packets of a new traffic flow first enter a SDN, theseinitial packets are unable to be forwarded until the control plane hasprovided the forwarding devices within the SDN with forwardinginstructions for the flow. Further, to enable the control plane todecide what to do with these initial packets of a new flow, the packetsare typically transmitted by the forwarding devices to the controlplane. In SDNs employing many forwarding devices in the forwarding planethat may receive many such “unknown” packets, such packet transmissionto the control plane can overwhelm the network and control plane withtraffic.

SUMMARY

According to one embodiment of the invention, a method is performed by anetwork element acting as a forwarding plane within a software-definednetwork to reduce negative effects of slow-path packet processing. Themethod includes receiving, by the network element, a first packet. Themethod further includes determining whether the first packet matches anyflow entry within a set of one or more flow tables of the networkelement. This set of flow tables include a set of one or more flowentries, each of which includes a match criteria to be matched againstmatch portions of incoming packets. Each of the flow entries alsoincludes a set of one or more actions to be performed for packets havingsaid match portions that match the match criteria of that flow entry.The method also includes performing a miss procedure responsive todetermining that the first packet does not match any flow entry withinthe set of flow tables. The miss procedure includes inserting at least aportion of the first packet as a first entry in a packet miss table(PMT). The PMT stores portions of packets received by the networkelement that did not match any flow entry of the set of flow tables. Themiss procedure also includes providing, to a controller, access to thefirst entry of the PMT upon the controller seeking such access. In anembodiment, the network element determines that the controller seeksthis access when the network element receives, from the controller, apull entry request message indicating a request for one or moreunprocessed entries of the PMT. In an embodiment, the network elementprovides access to the controller by transmitting a pull entry responsemessage to the controller that includes the requested entry or entriesof the PMT. Additionally, in some embodiments of the invention, the missprocedure further comprises comparing the first packet to a set of oneor more entries of a configurable default rule table (CDRT) bydetermining whether a match portion of the first packet matches a CDRTmatch criteria from any of the set of entries. Each entry of the CDRTincludes the CDRT match criteria to be used to determine whether packetsmatch that entry. Each entry of the CDRT also includes a formatspecifier that indicates how to construct entries in the PMT for packetsthat match that entry.

According to another embodiment of the invention, a method is performedby a first network element acting as a controller within asoftware-defined network to reduce negative effects of slow-path packetprocessing. The method includes accessing unprocessed entries of apacket miss table (PMT) of a second network element acting as aforwarding plane in the software-defined network. Each entry of the PMTstores portions of packets received by the second network element thatdid not match any entry within a set of one or more flow tables of thesecond network element. The set of flow tables include a set of one ormore flow entries, each of which includes a match criteria to be matchedagainst a match portion of incoming packets. Each of the flow entriesalso includes a set of one or more actions to be performed for packetshaving the match portion that matches the match criteria of that flowentry. The method further includes, responsive to the accessing of theunprocessed entries of the PMT, causing the second network element toinsert a set of one or more flow entries into one or more of the set offlow tables. In an embodiment, the first network element accesses theunprocessed entries of the PMT by transmitting to the second networkelement a pull entry request message indicating a pull request for theunprocessed entries of the PMT and also receiving, from the secondnetwork element, a pull entry response message including a set of one ormore unprocessed entries of the PMT.

In an embodiment of the invention, a network element acts as aforwarding plane within a software-defined network (SDN) and reducesnegative effects of slow-path packet processing. The network elementincludes a set of one or more physical network interfaces. The set ofphysical network interfaces are configured to receive packets to beforwarded. The set of physical network interfaces are also configured toprovide, for a controller in the SDN, access to unprocessed entries of apacket miss table (PMT) upon the controller seeking said access. The PMTis to store portions of packets received by the set of physical networkinterfaces that do not match any flow entry of a set of one or more flowtables. The network element also includes a packet processing moduleconfigured to configure the set of one or more flow tables. The set offlow tables include a set of one or more flow entries, each includingmatch criteria to be compared to match portions of incoming packets.Each of the set of flow entries also includes a set of one or moreactions to be performed for packets having a match portion that matchesthe match criteria of the flow entry. The packet processing module isalso configured to determine whether match portions of received packetsmatch the match criteria of any of the set of flow entries of the set offlow tables. The packet processing module is also configured to performa miss procedure when a received packet does not match any entry of theset of flow tables. This miss procedure is either inserting at least aportion of the received packet as an entry of the PMT, or updating anexisting entry of the PMT based upon the received packet.

In another embodiment of the invention, a network element acts as acontroller within a software-defined network and reduces negativeeffects of slow-path packet processing. The network element includes aset of one or more physical network interfaces and a control modulecoupled to the set of physical network interfaces. The control module isconfigured to access unprocessed entries of a packet miss table (PMT) ofa second network element acting as a forwarding plane in thesoftware-defined network. Each entry of the PMT stores portions ofpackets received by the second network element that did not match anyentry within a set of one or more flow tables of the second networkelement. The set of flow tables include a set of one or more flowentries, each of which to include match criteria to be compared to matchportions of incoming packets. Each flow entry is also to include a setof one or more actions to be performed for packets having the matchportion that matches the match criteria of that flow entry. The controlmodule is also configured to, responsive to the accessing of theunprocessed entries of the PMT, transmit, to the second network element,one or more flow entry modification messages. The one or more flow entrymodification messages indicate a command to insert a set of one or moreflow entries into one or more of the set of flow tables.

In embodiments of the invention, “miss” packets that do not match anyentry in the flow tables may be instantly processed (according to aconfigurable default rule table) instead of having to be held untilinstructions from a controller arrive. Further, instead of transmittingthese missed packets to the controller (and perhaps overwhelming thecontroller), the missed packets (or complete or partial copies thereof)may be stored in the forwarding plane until the control plane is readyto process them.

According to another embodiment of the invention, a method is performedby a first network element acting as a controller within asoftware-defined network to reduce negative effects of slow-path packetprocessing. The method includes accessing unprocessed entries of apacket miss table (PMT) of a second network element acting as aforwarding plane in the software-defined network. Each entry of the PMTstores portions of packets received by the second network element thatdid not match any entry within a set of one or more flow tables of thesecond network element. The set of flow tables include a set of one ormore flow entries, each of which includes match criteria to be comparedto match portions of incoming packets. Each of the flow entries alsoincludes a set of one or more actions to be performed for packets havingthe match portion that matches the match criteria of that flow entry.The method further includes, responsive to the accessing of theunprocessed entries of the PMT, causing the second network element toinsert a set of one or more flow entries into one or more of the set offlow tables. In this embodiment, the first network element accesses theunprocessed entries of the PMT by using an existing cache-coherencymechanism provided by the operating systems—or an included softwaresubsystem—of the first and second network elements that allows the firstand second network elements to each behave approximately as if the dataof the PMT is located in the local memory of that network element. Forthis embodiment, weak cache coherency is both sufficient and desirable.With weak coherency, it is possible that some cache inconsistency willoccur, but owing to the mechanism of the invention, this will resultin—at worst—slightly sub-optimal performance as inconsistent entrieswill result in some degree of re-processing of PMT entries. This is morethan off-set by the relative simplicity of a weak cache coherencymechanism.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention may best be understood by referring to the followingdescription and accompanying drawings that are used to illustrateembodiments of the invention. In the drawings:

FIG. 1 illustrates a portion of a software-defined network withaccelerated forwarding according to one embodiment of the invention;

FIG. 2 illustrates a flow performed by a forwarding element in asoftware-defined network for accelerating forwarding according to oneembodiment of the invention;

FIG. 3 illustrates a miss procedure performed by a forwarding element ina software-defined network for accelerating forwarding according to oneembodiment of the invention;

FIG. 4 illustrates a flow performed by a controller in asoftware-defined network for accelerating forwarding according to oneembodiment of the invention; and

FIG. 5 illustrates a configurable default rule table configurationprocedure performed by a controller in a software-defined network foraccelerating forwarding according to one embodiment of the invention.

DESCRIPTION OF EMBODIMENTS

In the following description, numerous specific details are set forth.However, it is understood that embodiments of the invention may bepracticed without these specific details. In other instances, well-knowncircuits, structures and techniques have not been shown in detail inorder not to obscure the understanding of this description.

References in the specification to “one embodiment,” “an embodiment,”“an example embodiment,” etc., indicate that the embodiment describedmay include a particular feature, structure, or characteristic, butevery embodiment may not necessarily include the particular feature,structure, or characteristic. Moreover, such phrases are not necessarilyreferring to the same embodiment. Further, when a particular feature,structure, or characteristic is described in connection with anembodiment, it is submitted that it is within the knowledge of oneskilled in the art to effect such feature, structure, or characteristicin connection with other embodiments whether or not explicitlydescribed.

In the following description and claims, the terms “coupled” and“connected,” along with their derivatives, may be used. It should beunderstood that these terms are not intended as synonyms for each other.“Coupled” is used to indicate that two or more elements, which may ormay not be in direct physical or electrical contact with each other,co-operate or interact with each other. “Connected” is used to indicatethe establishment of communication between two or more elements that arecoupled with each other.

An electronic device (e.g., an end station, a network element) storesand transmits (internally and/or with other electronic devices over anetwork) code (composed of software instructions) and data usingcomputer-readable media, such as non-transitory tangiblecomputer-readable media (e.g., computer-readable storage media such asmagnetic disks, optical disks, read only memory, flash memory devices)and transitory computer-readable transmission media (e.g., electrical,optical, acoustical or other form of propagated signals—such as carrierwaves, infrared signals). In addition, such electronic devices typicallyinclude a set of one or more processors coupled to one or more othercomponents, such as one or more non-transitory machine-readable media(to store code and/or data), user input/output devices (e.g., akeyboard, a touchscreen, and/or a display), and network connections (totransmit code and/or data using propagating signals). The coupling ofthe set of processors and other components is typically through one ormore busses and bridges (also termed as bus controllers). Thus, anon-transitory computer-readable medium of a given electronic devicetypically stores instructions for execution on one or more processors ofthat electronic device. One or more parts of an embodiment of theinvention may be implemented using different combinations of software,firmware, and/or hardware.

As used herein, a network element (e.g., a router, switch, bridge) is apiece of networking equipment, including hardware and software, whichcommunicatively interconnects other equipment on the network (e.g.,other network elements, end stations). Some network elements are“multiple services network elements” that provide support for multiplenetworking functions (e.g., routing, bridging, switching, Layer 2aggregation, session border control, Quality of Service, and/orsubscriber management), and/or provide support for multiple applicationservices (e.g., data, voice, and video). Subscriber end stations (e.g.,servers, workstations, laptops, netbooks, palm tops, mobile phones,smartphones, multimedia phones, Voice Over Internet Protocol (VOIP)phones, user equipment, terminals, portable media players, GPS units,gaming systems, set-top boxes) access content/services provided over theInternet and/or content/services provided on virtual private networks(VPNs) overlaid on (e.g., tunneled through) the Internet. The contentand/or services are typically provided by one or more end stations(e.g., server end stations) belonging to a service or content provideror end stations participating in a peer to peer service, and mayinclude, for example, public webpages (e.g., free content, store fronts,search services), private webpages (e.g., username/password accessedwebpages providing email services), and/or corporate networks over VPNs.Typically, subscriber end stations are coupled (e.g., through customerpremise equipment coupled to an access network (wired or wirelessly)) toedge network elements, which are coupled (e.g., through one or more corenetwork elements) to other edge network elements, which are coupled toother end stations (e.g., server end stations).

Traditionally, network elements are commonly separated into a controlplane and a data plane (sometimes referred to as a forwarding plane or amedia plane). In the case that the network element is a router (or isimplementing routing functionality), the control plane typicallydetermines how data (e.g., packets) is to be routed (e.g., the next hopfor the data and the outgoing port for that data), and the data plane isin charge of forwarding that data. For example, the control planetypically includes one or more routing protocols (e.g., Border GatewayProtocol (BGP), Interior Gateway Protocol(s) (IGP) (e.g., Open ShortestPath First (OSPF), Routing Information Protocol (RIP), IntermediateSystem to Intermediate System (IS-IS)), Label Distribution Protocol(LDP), Resource Reservation Protocol (RSVP)) that communicate with othernetwork elements to exchange routes and select those routes based on oneor more routing metrics. Alternatively, a network element may onlyimplement a data plane (forwarding plane) or only implement all or partof a control plane. This separation of duty is common insplit-architecture network models. The term “split-architecture network”is largely synonymous for the term “software-defined network” (SDN), andthe terms may be used interchangeably herein.

Typically, a network element includes a set of one or more line cards, aset of one or more control cards, and optionally a set of one or moreservice cards (sometimes referred to as resource cards). These cards arecoupled together through one or more mechanisms (e.g., a first full meshcoupling the line cards and a second full mesh coupling all of thecards). The set of line cards make up the data plane, while the set ofcontrol cards provide the control plane and exchange packets withexternal network element through the line cards. The set of servicecards can provide specialized processing (e.g., Layer 4 to Layer 7services (e.g., firewall, IPsec, IDS, P2P), VoIP Session BorderController, Mobile Wireless Gateways (GGSN, Evolved Packet System (EPS)Gateway)). By way of example, a service card may be used to terminateIPsec tunnels and execute the attendant authentication and encryptionalgorithms.

Software-Defined Networks

Unlike monolithic network architectures that require complex networkmanagement functions to be distributed in the control planes ofmultifunctional network elements throughout the network, and furtherrequire complex data and control planes integrated into the samemultifunctional network element, a flow-based software-defined networkallows the data planes of the network to be separated from the controlplanes. Data planes can be implemented as simple discrete flow switches(forwarding elements) distributed throughout the network, and thecontrol planes providing the network's intelligence are implemented in acentralized flow controller that oversees the flow switches. Bydecoupling the control function from the data forwarding function,software-defined networking eases the task of modifying the networkcontrol logic and provides a programmatic interface upon whichdevelopers can build a wide variety of new routing and protocolmanagement applications. This allows the data and control planes toevolve and scale independently, while reducing the management necessaryfor the data plane network components.

The control plane, or controller, typically controls the forwardingplanes through a control plane signaling protocol over a secure andreliable transport connection between the forwarding elements and thecontroller. The controller typically includes an operating system thatprovides basic processing, I/O, and networking capabilities. Amiddleware layer provides the context of the software-defined networkcontroller to the operating system and communicates with variousforwarding plane elements using a control plane signaling protocol. Anapplication layer over the middleware layer provides the intelligencerequired for various network operations such as protocols, networksituational awareness, and user-interfaces. At a more abstract level,the application layer works with a logical view of the network and themiddleware layer provides the conversion from the logical view to thephysical view.

In an embodiment of a software-defined network paradigm, each forwardingelement is a flow switching enabled network device. The flow switchingenabled network device forwards packets based on the flow each packetbelongs to instead of the destination IP address within the packet,which is typically used in current conventional packet switched IPnetworks. A flow may be defined as a set of packets whose headers matcha given pattern of bits. In this sense, traditional IP forwarding isalso flow-based forwarding where the flow is defined by the destinationIP address only. Instead of just considering the destination IP addressor the source IP address, though, generic flow definitions allow manyfields (e.g., 10 or more) in the packet headers to be considered.

The control plane transmits relevant messages to a forwarding elementbased on application layer calculations and middleware layer mapping foreach flow. The forwarding element processes these messages and programsthe appropriate flow information and the corresponding actions in itsflow tables. The forwarding element maps packets to flows and forwardspackets based on these flow tables. Of course, flow tables may beimplemented in a variety of data structures, such as maps, lists,arrays, files, tables, relational databases, etc. Further, thediscussion of columns and rows within these tables is arbitrary; whileone implementation may choose to put entries in rows it is trivial tomodify the data structure to put entries in columns instead. Inaddition, the forwarding element may need to have data processing anddata generation capabilities for such importation operations as DPI,NetFlow data collection, OAM, etc.

Standards for flow processing define the protocols used to transportmessages between the control and the forwarding plane and describe themodel for the processing of packets. This model for processing packetsin flow processing devices includes header parsing, packetclassification, and making forwarding decisions.

Header parsing describes how to interpret the packet based upon awell-known set of protocols (e.g., Ethernet, virtual local area network(VLAN), multiprotocol label switching (MPLS), IPv4, etc.). Some layersof headers contain fields including information about how tode-multiplex the next header. For example, an Ethernet header includes afield describing what type of header is in the next layer. Some protocolfields are used to build a match structure (or key) that will be used inpacket classification. For example, a first key field could be a sourcemedia access control (MAC) address, and a second key field could be adestination MAC address.

Packet classification involves executing a lookup in memory to classifythe packet by determining which flow entry in the flow tables bestmatches the packet based upon the match structure, or key, of the flowentries. It is possible that many flows can correspond to a packet; inthis case the system is typically configured to determine one flow fromthe many flows according to a defined scheme (e.g. selecting a firstflow entry that is matched).

Making forwarding decisions and performing actions occurs based on theflow entry identified in the previous step of packet classification byexecuting actions using the packet. Each flow in the flow table isassociated with a set of actions to be executed for each correspondingpacket. For example, an action may be to push a header onto the packet,forward the packet using a particular port, flood the packet, or simplydrop the packet. Thus, a flow entry for IPv4 packets with a particulartransmission control protocol (TCP) destination port could contain anaction specifying that these packets should be dropped.

However, when an unknown packet (for example, a “missed packet” or a“match-miss” as used in OpenFlow parlance) arrives at the data plane(e.g. at a forwarding device), the packet—or a subset of the packetheader and content—is typically immediately forwarded to the controlplane (or controller). The controller, which executes software thatdefines a process for deciding how to handle packets and programcorresponding entries in the data-plane, will then program flow tableentries (also known as flow entries) into forwarding devices in the dataplane to accommodate packets belonging to the flow of the unknownpacket. In some instances, upon the controller receiving a “missed”packet from a forwarding device, the controller will also forward thepacket to a destination that it determines to be appropriate. Thiscontroller-based forwarding is sometimes referred to as slow-pathprocessing, which can be detrimental and/or pathological to the network.

Among other pieces of information, programmed flow table entries defineboth a specific set of match criteria (a set of values or wildcards, oran indication of what portions of a packet should be compared to aparticular value/values/wildcards, as defined by the data plane'smatching capabilities—i.e.—for specific fields in the packet header, orfor some other packet content), and an action or set of actions for thedata plane to take on receiving a matching packet. However, theprogrammed match criteria may only match a subset of packets that may bereceived (either for a port or the system). In this likely case,additional “unknown” packets will also be forwarded to the controller.

Once a specific flow table entry has been programmed by the controller,when a next packet with matching credentials arrives, it matches thecreated entry in the data plane and the forwarding device takes theaction associated with the matched entry.

Existing SDN mechanisms can cause network issues such as congestion andpacket loss when, for example, a new node is added to the networkbecause the node's flow table is empty. Because there are no entries inthe flow tables associated with this new node, all the trafficassociated with this new node would be forwarded to the controller,until specific forwarding entries have been created in the flow tablesof this node by the controller, and all packet types are handledaccording to the one default “match-miss action” (typically discardedwith OpenFlow) or some other single default forwarding action (againmost likely being discarded). For example, OpenFlow allows programmersto program a default rule for unknown packets, such as “Drop all” or“Forward all”. Since control plane packet processing capabilities areslower than the rate at which packets can be received by the data planeand forwarded to the control plane, this can overwhelm the controller'sprocessing capabilities, causing congestion at the controller andpotentially catastrophic delays in the network.

For this reason, a typical forwarding device disables the matchingfeature and does not forward information to the controller until doingso is explicitly enabled (by the controller itself, typically). As aresult, no packets are forwarded until the newly installed—orcreated—forwarder(s) are fully configured.

A similar problem can also occur when someone purposely sends a veryhigh quantity of traffic such that all (or nearly all) received packetshave ‘new’ credentials and thus appear to be “unknown” to the dataplane. The resulting forwarding of all this traffic to the controllermay also overwhelm the control plane and can potentially bring down allor a portion of the network. Such an occurrence is one common vector fora Denial of Service (DoS) attack.

Existing SDN implementations may avoid overwhelming the controller byimplementation design. For instance, a separate processor may be usedstrictly to handle the receipt and storing of incoming control traffic.This approach can—under worst case conditions—allow the implementationto start discarding all control packets it receives when these packetswould otherwise overwhelm the controller. However, there are a number ofproblems with this approach. First, for any of a number of reasons(incompatible design, scale considerations, etc.) an implementation maynot implement this capability. As a result, it is quite possible that acontroller implementation can be overwhelmed if the forwarding plane (orforwarding device) is sending a higher-than-normal volume of traffic tothe controller—even if the forwarding device has been fullyconfigured—as a result of changes in network traffic. A second problemwith the approach utilizing a separate processor that potentiallydiscards control packets is that discarding new traffic as a result ofback-logged older traffic is well-known to be an issue, often to thepoint of inducing pathological network behavior.

A further problem with existing SDN implementations is that the firstpacket of any as of yet unclassified flow will experience potentiallysignificant processing delay as a result of the different treatmentreceived (the controller performing slow-path processing throughanalysis of the packet) in comparison with the remaining packets in theflow. Thus, the frequency of out-of-order packet delivery events will behigher with any such approach. As a result, packet-based rule creationas a result of slow-path processing of un-matched traffic may lead toout-of-order delivery, and/or excessive delay variation, in a flow.Additionally, the transmission of each “missed” packet to the controllercan be quite costly as this data consumes the resources of theforwarding elements and forwarding links in the network.

Embodiments of the invention present a SDN configuration useful to avoidthese problems and thereby accelerate the speed of forwarding in thenetwork. Embodiments of the invention do not require the SDNimplementation to be OpenFlow compliant. However, embodiments of theinvention utilize structures and concepts related to those presented byOpenFlow, such as flow tables (also known as match tables) used byforwarding devices, and the ability of the control plane (or controller)to perform packet-based rule creation by processing packet informationand determine configuration information needed to program the forwardingdevices to recognize “new” flows and forward these packets accordinglyand/or provide new match criteria that makes it possible for theforwarding device to provide more appropriate packet information to thecontroller when a subsequent packet of the same flow is received by theforwarding device.

Overview

In embodiments of the invention, the controller first identifies theservice types any forwarding node is supposed to provide in the givennetwork and, based on this information and optionally further based uponon other information such as network topology, defines a set of defaultforwarding rules for the data path. Additionally, the controller mayhave a prioritized list of configuration steps based upon the devicetype, which it will begin to program into a configurable default ruletable (CDRT) of the forwarding device. Thus, based on the device typeand the prioritized list of configuration steps, the controller can thenenable limited forwarding after having completed such a partialconfiguration. In embodiments of the invention, the controller continueswith these prioritized configuration steps in parallel with limitedforwarding performed by the forwarding device using actions defined inentries of the CDRT until such time (if ever) as configuration iscompleted.

Such a configuration enables limited, but useful forwarding to quicklyoccur. For example, this configuration allows for early initiation ofdevice-type-specific control protocols in the network such as theSpanning Tree Protocol (STP), Shortest Path Bridging (SPB) for a bridge,or a site-specific routing protocol (such as Open Shortest Path First(OSPF), Intermediate System to Intermediate System (IS-IS), InteriorBorder Gateway Protocol (iBGP), etc.) for a router. Additionally,depending upon the device type, it may be preferable not to discardpackets by default. For example, an Ethernet bridge may be configuredwith a default action of ‘Flood’, which is a common operation for suchbridges.

Additionally, the capability to immediately allow a limited amount offorwarding can be critical in SDN applications where device types may beinstantiated as one or more virtual devices using generic, fullyprogrammable, forwarding devices where full configuration may require anexcessive amount of time.

After the partial configuration (based on device type) has beencompleted, and some subset of packet forwarding is enabled, packet-basedrule creation begins. When an unknown packet (i.e. packet for whichthere is no more specific action or rule configured in the flow tables)is received by the forwarding plane, the forwarding plane executes thedefault forwarding action associated with the packet from a CDRT entryof the CDRT. This occurs without involving the control plane in theforwarding for this specific packet.

As this packet is processed, a portion (or all) of the packet is copiedinto forwarding device local memory (such as a Packet Miss Table (PMT)).In some embodiments, additional telemetry for the flow associated withthe packet is copied into the PMT, such as a time of receipt of thepacket, or the time since a packet with the same credentials hasarrived. The control plane subsequently pulls entries from the dataplane local memory at its own rate (independent of data planeprocessing), processes it, and creates a more specific entry (ormultiple more specific entries) in the set of flow tables.

In these embodiments, because the controller works exclusively withpackets or portions of packets proactively retrieved from the forwardingplane local memory, the slow path is never used for forwarding, thusavoiding delay variation of packets in a flow and potential out of orderdelivery of those packets.

In contrast, in OpenFlow-based systems, the presumption is that theforwarding device will push the “missed packet” flow information to thecontroller for further processing. Since the controller may be (and isoften) executing on a separate physical device, the forwarding devicedoes not necessarily know the processing capabilities of the controller.This lack of information on the part of the transmitting node—theforwarding device—can potentially create congestion at the controller,the loss of traffic, and the controller having an incomplete picture ofthe actual traffic matrix in the network. While OpenFlow ‘Packet-In’ and‘Packet-Out’ messages help to manage such buffers at the controller,these messages add extra messaging on the network.

In embodiments of the present invention, because the controller pullspacket information at its own convenience, the forwarding device cannotoverwhelm the controller. Thus, when there are many forwarding devicesin the SDN and many “unknown” packets arriving at the forwardingdevices, the controller will be able to process these “unknown” packetsat its own pace instead of being overwhelmed by a deluge of forwardedpacket information.

Further Detail

The general approach used in embodiments of the invention is to identifythe services expected from forwarding devices in a network, and thenaccordingly program the default actions for the unknown (miss) packetsin configurable default rule tables (CDRTs) of each device. Thisinformation may be determined in advance for each device type that maybe used in a specific network, and applied to new devices as they areadded to the network, based on the type and location in the topology ofthis new device. In addition, in certain embodiments, the controllerpulls packet information for which there are as yet undefined specificforwarding entries, processes this information, and creates the specificmissing entry or entries (typically in the flow tables, but in someembodiments, within the CDRTs).

In some embodiments, a most commonly applicable default action for usewithin entries of the CDRTs will be to discard matching packets, as thisaction effectively simulates the same thing that would occur if thedevice was not present (or not yet enabled) in the network. In thesescenarios, discarding the packet will most likely result in there-transmission of the discarded packet after some delay. Other defaultactions are also useful, such as flooding unmatched packets for devicesthat play the role of an Ethernet bridge in the SDN.

In an embodiment of the invention, the default action includes dataplane forwarding instructions to be used to perform the limitedforwarding of the packet. In some embodiments, the default action alsoincludes a format specifier indicating what portions of the packet areto be stored in data plane local memory (e.g. the Packet Miss Table) andmade available to the controller. For example, a format specifier mayindicate that, for any packet matching that particular CDRT rule, thefirst 50 bytes of the packet shall be stored as an entry in the PMT. Thenumber of bytes (in this example, 50) may be configured based on type ofservice that device is supposed to provide in the network. For oneservice type, this might be determined to be the number of bytes fromthe packet needed to be able to include potential header informationthat would be used as part of a more specific match criteria to beconstructed by the controller for a flow entry to be placed in the flowtables of the forwarding device. In other embodiments, the formatspecifier is an index value for semantically organized packet contentspecific to any device type whose function the implementation isdesigned to support. For example, a format specifier may be definedwhere the semantic is that the stored data include only specificbit-position (or ranges of bits) likely to be key for specific packettypes (e.g. Ethernet frame header fields, IPv4 packet header fields,IPv6 packet header fields, etc.).

In embodiments of the invention, default actions can be defined per port(or virtual port) or per device (or device instance) for specific devicetypes, or for all devices in a network.

FIG. 1 illustrates a portion of a software-defined network (SDN) 100with accelerated forwarding according to one embodiment of theinvention. The SDN depicted contains a first network element 102functioning as a controller and a second network element 112 functioningas a forwarding plane. However, in alternate embodiments, one or both ofthe first network element 102 and second network element 112 execute asvirtual network elements, and thus can execute on together on onephysical device or split among a plurality of physical devices.

In this diagram, portions of packets are illustrated with common shapessuch as squares, triangles, circles, and empty boxes. These symbols mayrepresent a range of data values including a particular bit, group ofbits, byte, or group of bytes in these packets. As such, these datavalues may be packet header fields or data from within the payload ofthe packet or datagram. Each data value, though depicted as possiblybeing immediately adjacent to one another, may or may not be sequentialdata values within the packet.

At circle ‘1’, the control module 104 of the network element 102,through the network interfaces 106, may optionally configure one or moreof flow tables 116A-116N of the second network element 112 by insertingone or more flow table entries 140 into the flow tables via one or moreflow entry modification messages 133. In contrast to OpenFlow-typenetworks, where entries of the flow table are only added by a controllerafter a forwarding device has received a packet that “missed” in itsflow table and forwarded that packet to the controller for analysis, inthis depicted embodiment the flow table entries 140 are proactivelyinstalled by the control module 104. Thus, the flow table entries 140installed in this optional first configuration do not result fromtraffic that “misses” in the flow tables. Traffic that “misses” the flowtables is that traffic having a match portion 131 (e.g., a set of packetheader fields, packet payload values, or other packet locations) thatdoes not match a match criteria 141 (a set of values and/or wildcards)of any flow entry of the set of flow tables 116A-116N. Each entry of theflow tables 116A-116N includes a match criteria 141 and a set of one ormore actions to execute for any traffic having a packet match portion131 matching the match criteria 141 of that flow entry. This optionalconfiguration, in some embodiments, bases the flow table entries 140upon a determined device type of the second network element 112. In someembodiments, the flow table entries 140 are from a stored set ofprevious flow table entries, either from the same network element 102 ora similar network element, which may be stored by the network element102 or by some external device.

Also at circle ‘1’, the control module 104 transmits a set of one ormore CDRT modification messages 132 to populate a configurable defaultrule table (CDRT) 118 of the second network element 112. Similar to theoptional configuration described above with respect to the flow entrymodification messages 133, these CDRT modification messages 132 areissued by the control module 104 in an effort to enable limitedforwarding by the second network element 112, and thus do not occur (atthis stage) responsive to any traffic “missing” the flow tables116A-116N. Each CDRT entry, in the depicted embodiment, includes a CDRTmatch criteria 144 (similar to a flow table 116A match criteria 141), aformat specifier 145, and a set of one or more default actions 146.After a packet (e.g. 130) “misses” the set of flow tables 116A-116N, thepacket's match portion 131 is compared to the CDRT match criteria 144 todetermine a set of default actions 146 to be executed with the packet.Further, the format specifier 145 indicates which portions of the packetare to be placed in a Packet Miss Table (PMT) 120. At this stage, thepacket processing module 114 is enabled to perform limited packetforwarding of traffic even before the network element 112 has receivedany non-control module 104 oriented traffic whatsoever. The CDRT entries143 may be generated by the control module 104 based upon a determineddevice type of the second network element 112, the location of thesecond network element 112 in the SDN, and/or the expected service(s)the second network element 112 will perform as a whole or on aport-by-port basis. The transmission of CDRT modification messages 132may also be used at a later point responsive to changes within the SDN;for example, if a new port is added to a forwarding element in the SDN,or if the second network element 112 changes roles in the SDN (perhapsdue to a network topology change).

At circle ‘2’, a first packet 130 is received at the network interfaces108 of the network element 112 and is directed, at circle ‘3’ by thepacket processing module 114, to be matched against the set of flowtables using the packet's match portion 131 and the match criteria 141of the flow entries 140 of the flow tables 116A-116N. In the depictedembodiment, assuming the only flow entries 140 include the two entriesillustrated as part of flow table 116A (space/square/circle, andcircle/circle/space), the match portion 131 (square/triangle/square) ofthe first packet 130 will not have a match in the flow table 116A.Accordingly, a flow table “miss” occurs for the first packet 130.

At optional circle ‘4’, the packet 130 is compared to CDRT entries 143of the configurable default rule table 118 by determining whether thematch portion 131 matches any of the CDRT match criteria 144 of the CDRTentries 143. (Note that in some embodiments, the match portion 131 to bematched against the flow table 116A match criteria 141 is different thanthe match portion 131 to be matched against the CDRT match criteria 144of the CDRT 118.) In the illustrated embodiment, assuming the CDRT 118only includes three CDRT entries 143 (space/square/circle,square/space/triangle, and square/triangle/square), the packet 130matches the third entry 139. Accordingly, the set of one or more defaultactions 146 are to be performed with the packet 130. In the depictedembodiment, the set of default actions 146 (represented as ‘E’) dictatesthat the packet 130 is to be forwarded (at circle ‘4a’) out one of thenetwork interfaces 108 to a particular destination. Additionally, theformat specifier 145 of the matched entry 139 is utilized by the packetprocessing module 114 to determine what entry is to be inserted into thePacket Miss Table 120. As described earlier herein, the format specifier145 may be a value, range of values, or set of codes indicating whatportions of the packet are to be inserted into the PMT 120. In thedepicted embodiment, the format specifier 145 for each of the CDRTentries 143 is a bitmap indicating which portions of the packet 130 areto be used—here, the format specifier 145 of ‘011’ indicates that thesecond and third header field values of the packet are to be insertedinto the PMT 120.

Thus, at circle ‘5’, the packet processing module 114 inserts a PMTentry 147 into the PMT 120 that includes a packet portion 149 that isthe second and third header fields values of the packet 130—or thetriangle and square. In embodiments where the CDRT 118 is not utilized,a particular defined packet portion 149 is defined for all packets that“miss” in the flow tables 116A-116N—for example, a fixed range of bytesor the entire packet are options for the packet portion 149. At thispoint, there are two unprocessed entries 148 in the PMT 120 that aredeemed unprocessed as they have not yet been accessed by the controlmodule 104. The first unprocessed entry was inserted into the PMT 120 ata period in time before the packet 130 was received, which is notdepicted herein.

After some amount of time, and assuming no other packets have beenreceived by the second network element 112, the control module 104 atcircle ‘6’ accesses the PMT 120 to seek any unprocessed entries 146. Asdescribed elsewhere herein, the control module 104 may access the PMT120 in a variety of ways, such as utilizing. Distributed Shared Memory(DSM) or a signaling protocol. In the depicted embodiment of FIG. 1, thecontrol module 104 transmits a pull entry request message 134 seeking alatest one of the unprocessed entries 148 of the PMT 120. In otherembodiments, the pull entry request message 134 may seek an earliestone, a random one, a subset or defined quantity of, or all of theunprocessed entries 148 of the PMT 120. This pull entry request message134 is a “pull” message in that it enables the control module 104 toproactively seek the acquisition of data instead of passively waitingfor data to be sent at the convenience of another network device. Insome embodiments, the unprocessed entries 148 are deleted from the PMT120 or marked as being processed or in the process of being processed atthis point. In other embodiments, the unprocessed entries 148 deleted ormarked as processed only when a later flow entry modification message130 pertaining to that entry is received from the control module 104,which indicates that the control module 104 successfully received andprocessed that formerly-unprocessed entry of the PMT 120. The controlmodule 104 will then periodically or immediately check for additionalunprocessed entries 148 throughout operation of the SDN.

At circle ‘7’, the network element 112 responds to the pull entryrequest message 134 with a pull entry response message 136 that includesthe packet portion 149 of the latest PMT entry 147 representing thefirst packet 130.

Responsive to receipt of the pull entry response message 136, thecontrol module 104 processes the included packet portion 149 to generatea new flow entry to be included in one of the flow tables 116A-116N.This new flow entry is sent as part of a flow entry modification message130, which instructs the network element 112 to insert the new flowentry into a flow table (e.g. 116A) or edit an existing flow table entryto be equivalent to the new flow entry.

If possible, the control module 104 creates a specific flow entry in theflow tables 116A-116N containing the match criteria 141 and specificaction(s) 142 to be taken, and causes the PMT entry 147 information ithas just processed to be removed from or otherwise marked as invalid inthe PMT 120. Depending upon the embodiment, of course, the removal ofunprocessed entries 148 after their processing by the control module 104may or may not require specific action by the control module 104. In oneembodiment, the control module 104 causes the PMT entry 147 to be markedas “processed” if this was not done previously. In an embodiment wherethe PMT 120 maintains a pointer to keep track of a next unprocessedentry (e.g. one of 148), this pointer is now moved to a next unprocessedentry.

When creating the specific flow entry in the flow tables 116A-116N, thecontrol module 104 may create an entry in the flow tables 116A-116N thatis largely similar to an existing matching entry 139 in the CDRT, asidefrom the fact that it does not specify the content (via the formatspecifier 145) to be inserted into the PMT 120. Additionally, thecontrol module 104 may be configured to remove entries in the flowtables 116A-116N, thus triggering a refresh of that entry, or allowingfor a different behavior to be defined as a different specific action142 subsequently upon receipt of packets that previously matched thematch criteria 141 of the removed entry. In some embodiments, entries ofthe flow tables 116A-116N are able to be configured to be automaticallyremoved by aging out the entry (i.e. if the entry is not hit/refreshedin some amount of time, it is removed).

Then, at circle ‘9’, the network element 112 receives a second packet132 belonging to a same flow as the first packet 130, as indicated by ithaving the same match portion (square/triangle/square). At circle ‘10’,the second packet 132 is compared to the flow tables 116A-116N and willmatch the newly added flow entry just inserted (but not depicted) byflow entry modification message 130. Thus, the set of actions of thatnewly added flow entry (represented by ‘F’) will be performed for thesecond packet 132 by forwarding the packet using one or more networkinterfaces 108 at circle ‘11’, and the CDRT 118 will not need to beexamined.

While processing of this second packet 132 is similar to that of theprocessing of a packet belonging to an established flow (i.e. that doesnot miss in a flow table) in a traditional SDN, one key difference isclearly illustrated with respect to processing of the first packet 130of a flow and other packets of the flow arriving shortly thereafter thefirst packet 130. In traditional SDN environments, the first packet 130would miss in the set of flow tables (e.g. 116A), and would forwarded tothe controller for analysis. During this time, subsequent packetsbelonging to the flow may arrive and may similarly be sent to thecontroller (and likely dropped by the forwarding plane). This processcontinues in the forwarding plane until the controller is able toprogram the forwarding plane with one or more additional flow tableentries capable of identifying and processing packets of this flow.However, in embodiments of the invention and the embodiment identifiedin FIG. 1, the first few packets for a flow will miss at the flow tables116A-116N but may still be instantly be processed due to the set ofactions 146 in CDRT entries 143 of the CDRT 118. Similarly, informationdescribing these packets (such as packet portions 149 and otherpacket-related telemetry, which is not illustrated) will be maintainedin the PMT 120 and only transmitted to the controller (i.e. controlmodule 104) when the controller seeks this information. Further, thisunprocessed entry 148 information from the PMT 120 may be sentaggregated in only a few network messages to the controller.Accordingly, in such embodiments of the invention, the first packets ofa flow are immediately able to be processed, and the controller andnetwork are not inundated with control traffic related to “unknown”packets.

FIG. 2 illustrates a flow 200 performed by a forwarding plane in asoftware-defined network for accelerating forwarding according to oneembodiment of the invention. The operations of this and other flowdiagrams will be described with reference to the exemplary embodimentsof the other diagrams. However, it should be understood that theoperations of the flow diagrams can be performed by embodiments of theinvention other than those discussed with reference to these otherdiagrams, and the embodiments of the invention discussed with referencethese other diagrams can perform operations different than thosediscussed with reference to the flow diagrams. Though the flow diagramsin the figures show a particular order of operations performed bycertain embodiments of the invention, it should be understood that suchorder is exemplary (e.g., alternative embodiments may perform theoperations in a different order, combine certain operations, overlapcertain operations, etc.).

At 210, the forwarding plane receives a first packet, and thendetermines whether the first packet matches any flow entry within a setof one or more flow tables 220. The set of flow tables comprise a set ofone or more flow entries that each include a match criteria to bematched against match portions of incoming packets and a set of one ormore actions to be performed for packets having said match portions thatmatch the match criteria of that flow entry.

Responsive to determining that the first packet does not match any flowentry within the set of flow tables, the forwarding plane performs amiss procedure 230. This miss procedure 240, in an embodiment, includesinserting at least a portion of the first packet as a first entry in apacket miss table (PMT) 250. The PMT stores portions of packets receivedby the forwarding plane that did not match any flow entry of the set offlow tables 250. In some embodiments, this insertion occurs for everypacket that is found not to match any flow entry within the set of flowtables; however, in some embodiments, the insertion into the PMT occurswhen there is no entry existing in the PMT that describes the packet. Inthese embodiments, when a packet is received that misses in the set offlow tables, the miss procedure 240 includes updating at least a portionof a first entry in the PMT based upon that packet 255. This update mayinclude updating a counter in the first entry that indicates how manypackets are represented by that entry (i.e. how many packets have beenreceived by the forwarding plane that “missed” in the flow tables thatare described by that entry), updating a “last received” time toindicate the time that a last packet matching that PMT entry wasreceived, etc.

At 260, the forwarding plane provides, to a controller in thesoftware-defined network, access to the first entry of the PMT upon thecontroller seeking said access 260. In some embodiments of theinvention, the forwarding plane detects that the controller seeks saidaccess by receiving a pull entry request message from the controllerindicating a pull request for one or more unprocessed entries of the PMT270. In some embodiments of the invention, the forwarding plane providesthe controller access to the first entry of the PMT by, responsive tothe receiving of the pull entry request message, transmitting a pullentry response message to the controller that includes the first entryof the PMT 280.

FIG. 3 illustrates a miss procedure 300 performed by a forwarding planein a software-defined network for accelerating forwarding according toone embodiment of the invention. This miss procedure 300 illustrates onepossible embodiment of the miss procedure 240 of FIG. 2.

At 210, the forwarding plane compares the first packet to a set of oneor more entries of a configurable default rule table (CDRT). Thiscomparison occurs through determining whether a match portion of thefirst packet matches a CDRT match criteria from any of the set ofentries 310. Each entry of the CDRT includes a CDRT match criteria to beused to determine whether packets match that entry. In some embodiments,each entry of the CDRT also includes a format specifier that indicateshow to construct entries in the PMT for packets having the match portionthat matches the CDRT match criteria of that entry.

The forwarding plane then determines that the match portion of the firstpacket does match the CDRT match criteria of a first entry of the CDRT320. The portion of the first packet inserted as the first entry in thePMT is determined by the format specifier of the first entry of theCDRT. Then, the forwarding plane performs a set of default actions ofthe matched first entry of the CDRT, thereby causing the first packet tobe forwarded despite the first packet not matching any flow entry of theset of flow tables 330. Next, just as in FIG. 2, the forwarding planeinserts at least a portion of the first packet as a first entry in apacket miss table (PMT) 250. The PMT stores portions of packets receivedby the network element that did not match any flow entry of the set offlow tables.

FIG. 4 illustrates a flow 400 performed by a controller in asoftware-defined network for accelerating forwarding according to oneembodiment of the invention. In some embodiments of the invention, thecontroller performs configurable default rule table configuration, whichis further detailed in FIG. 5.

At 420, the controller accesses unprocessed entries of a packet misstable (PMT) of a network element acting as a forwarding plane in thesoftware-defined network. Each entry of the PMT stores portions ofpackets received by the network element that did not match any entrywithin a set of one or more flow tables of the network element. The setof flow tables include a set of one or more flow entries, each of whichincludes a match criteria to be matched against a match portion ofincoming packets. Each of the set of flow entries also includes a set ofone or more actions to be performed for packets having the match portionthat matches the match criteria of that entry.

In some embodiments of the invention, the controller performs theaccessing by transmitting, to the network element, a pull entry requestmessage indicating a pull request for the unprocessed entries of the PMT422. In some embodiments, the controller then receives, from the networkelement, a pull entry response message including a set of one or moreunprocessed entries of the PMT 424.

At 430, the controller, responsive to said accessing, causes the networkelement to insert a set of one or more flow entries into one or more ofthe set of flow tables. In some embodiments of the invention, thisoccurs by the controller transmitting, to the network element, a flowentry modification message indicating a command to insert the set offlow entries into the one or more of the set of flow tables 432.

FIG. 5 illustrates a configurable default rule table configurationprocedure 500 performed by a controller in a software-defined networkfor accelerating forwarding according to one embodiment of theinvention. In an embodiment of the invention, the controller performsthe configurable default rule table (CDRT) configuration 410 by firstdetermining a device type of a network element acting as a forwardingplane in the software-defined network 510.

Then, the controller transmits, to the network element, a configurabledefault rule table modification message to cause the network element toconfigure a set of one or more entries in a configurable default ruletable (CDRT) 520. These entries in the set of entries are determinedbased upon the determined device type. Accordingly, the network element,upon receipt of a packet that does not match any flow entry of the setof flow tables, is thereby configured to determine that the packetmatches a first CDRT entry of the CDRT entries, perform a set of one ormore actions specified by the first CDRT entry, and insert at least aportion of the first packet as a first entry in the PMT 520.

Configurable Default Rule Table Configuration Options

As previously described, the Configurable Default Rule Table (CDRT)includes CDRT entries 143 that include one or more default actions 146specifying processing decisions for packets that “miss” in the flowtables 116A-116N. There are many possibilities for what the defaultactions 146 may be. For example, if the device type of the forwardingdevice (i.e. network element 112) is an Ethernet switching device, auseful default action may be to forward a matching packet to all portsin the same Virtual Local Area Network (VLAN) as the packet. Or, if thedevice type of the forwarding device being programmed is a routingdevice, a useful default action may be to forward the packet to allmembers within a particular subnet. If the device type is a firewall, auseful default action might be to drop the packet, which configures theforwarding element to err on the side of caution. Further, if the devicetype of the forwarding element being programmed is a load balancingdevice, the default action might instruct the forwarding element todistribute the load (perhaps by using a very broad CDRT match criteria144 in a CDRT entry 143 to match a wide variety of traffic) according toa particular load distribution scheme, such as Round-Robin, randomchoice, etc.

Packet Miss Table Implementation Options

In some embodiments of the invention, the Packet Miss Table (PMT) 120might be made to appear to the control module 104 as a ring buffer;which would make it unnecessary for the control module 104 to need toreset its row counter and this might make it unnecessary for theunderlying hardware to explicitly remove rows that have been processedby the controller. In other embodiments, the PMT 120 may simply beimplemented using an incremented row counter with wrap. In this case,the network element 112 could simply create a new row (if there is not acurrent corresponding entry) by writing the new content to the next rowindicated by the row counter and incrementing the row counter. Thus,there would be no reason for the control module 104 to mark a row as“processed” unless the implementation in the control module 104 itselfuses this information—the hardware would overwrite the next row whetherit was being, or had been, processed. However, this approach is mostlyincompatible with an approach that uses a hash process to determine if amatching entry exists and to place new entries.

In other embodiments, the network element 112 implements a hashalgorithm to select a row of the PMT 120 into which to write a supposed“new” entry. If this approach is used, the network element 112 avoidsthe need to check if an entry exists, since—if it does exist—the hashalgorithm should be one that would cause such an entry to overwrite theexisting, identical, entry. In embodiments utilizing this approach,there is a computable probability that a hash collision will occur,causing an entry to be overwritten by another entry that is not thesame. However, as entries are processed by the controller, theprobability of subsequent collisions reduces. In addition to selecting ahash algorithm that ensures an entry would necessarily replace itself,the hash algorithm should also be chosen (and possibly multiplealternative algorithms provided) such that the probability of collisionis minimal for the data plane local memory allocated for this purpose.

Additionally, there is an advantage (specially, in cases where thecontrol module 104 is collocated with data plane 151) to having theunderlying hardware provide some sort of notification to the controlmodule 104 that a new entry has been made in the PMT 120 in a way thatallows the control module 104 to easily determine that it has processedall existing entries. This can be implemented in any number of ways, butone embodiment that avoids constant interruption of the control module104 is to have a counter that holds the number of new entries created bydata plane 151 processing (i.e. the packet processing module 114) sincethe last time the counter was read by the control module 104. In theseembodiments, the counter is reset when read.

Each PMT entry 147 may be organized in a number of possible ways. Forexample, in an embodiment each PMT entry 147 contains a form of anon-illustrated receipt context (e.g., the port on which thecorresponding packet was received) and the first N bits/bytes of thepacket (i.e. the packet portion 149), where the value of N is animplementation choice. However, in other embodiments greater efficiencyis achieved through use of a more complex row semantic, where, inaddition to the stored receipt context, there is a format specifier (orindex into a format specification table) with a finite number of“well-known” (commonly understood by the data and control planes)formats. This format specifier is accompanied by the key contentsassociated with each format, formatted according to the formatspecifier. In certain embodiments, the order of the PMT entry 147contents is not special and thus the fields in a PMT entry 120 may beordered in any sequence. In certain embodiments, format specifiersinclude a format for key fields in common Ethernet frame headers, IPv4and IPv6 headers, TCP and User Datagram Protocol (UDP) port numbers,etc., as well as certain combinations of these.

Additionally, there are many options for a mechanism for pulling theinformation from the PMT 120 to the control module 104. It is a up tothe implementer to decide what kind of protocols/mechanism theparticular implementation will use to pull the packet from the PMT 120of the data plane 151 to the control module 104. However, it isimportant that a particular implementation of a protocol considers thecost of increased packet flow between control module 104 and data plane151 as compared to the existing solutions such as OpenFlow. Inparticular, the implementer should consider the following four pointswhen deciding the preferred mechanisms to pull the PMT 120 informationfrom data plane 151:

(1) What are the processing capabilities and software architecture ofthe control module 104?

(2) What is the number of buffers available in the forwarding elementsand in the control module 104?

(3) Are the control plane 150 and data plane 151 co-located? Forexample, with a management card of a chassis acting as a control module104 and one or more line card(s) acting as data plane 151, the controlplane 150 and data plane 151 are co-located and signaling between thetwo may have a relatively low cost. Additionally, in the case wherecontrol plane 150 and data plane 151 are co-located, implementers canuse a mechanism like Direct Memory Access (DMA) to pull the packet fromthe data plane 151.

(4) Is the control module 104 a separate node in the network? In thiscase, it is important to consider the network between the control module104 and the number of forwarding nodes that a particular control module104 is controlling. In the case where control module 104 is a separatenetwork node, an implementer can choose to implement some protocol thatallows batching of the information retrieved by the control module 104.This protocol can be a standard based protocol or a proprietaryprotocol. One such example is where the control module 104 periodicallysends a ‘Probe Message’ to the forwarding device to check if thereexists any entry in the PMT 120 that requires control module 104processing. The control module 104 can use this ‘Probe Message’ to studythe state of the network and available buffers in data plane 151 andcontrol plane 150. For example, the ‘Probe Message’ can be used tocalculate the ‘total round trip time’ (RTT), and/or the maximum size ofa packet that can flow through the network between control module 104and data-plane without fragmentation (i.e. a Maximum Transmission Unit(MTU)).

The control module 104 can also use the ‘Probe Message’ to instruct thePMT 120 to arrange the unprocessed PMT entries 148 in an order based ontime stamp (e.g. the most recent entry is on the top of the table and tobe picked up first), a counter (e.g. the entry having a maximum numberof hits is on the top of the table and to be picked up first), or FirstIn First Out (FIFO)/reverse timestamp (e.g., the control module 104picks up entries for processing in the order they were created).

Based upon the information the control module 104 has determined (e.g.,network MTU, RTT, and a count of available buffers), the control module104 may send a ‘Pull Entry-Request’ message 134 to the data plane 151.This message, in some embodiments, contains the information detailinghow many of the unprocessed entries 148 can be packed into a single‘Pull Entry-Response’ message 136. In an embodiment, the ‘PullEntry-Request” message 134 includes information detailing the number ofmessages that were successfully delivered (and processed) at the controlmodule 104 from the last “Pull Entry-Response” message 136.

Another embodiment includes configuring the control module 104 torequest one PMT entry 147 from the forwarding device 112 at a time. Theimplementation for this approach is very simple, involving astraightforward request/response mechanism in which the control module104 requests a PMT entry (for example, a next PMT entry) from the PMT120 of the forwarding device 112, and receives: 1) a response containingthat entry, 2) an error message (possibly indicating that no unprocessedentries currently exist, or possibly indicating some other problem withthe request), or 3) no response (this may be the preferred approach inthe event that the forwarding device 112 has no information to send). Incertain embodiments, failing to receive a response from the forwardingdevice 112 is not necessarily an indication of a failure, as there maybe other ways for the control module 104 and forwarding device 112 toeach determine the “liveness” of the other.

Another approach utilizes a batching mechanism to reduce the amount oftraffic generated when requesting unprocessed entries 148 of the PMT120. In this approach, the control module 104 requests an integralnumber of entries from the forwarding device's 112 PMT 120. In oneembodiment, this approach utilizes a tunable parameter (that can be setby the operator) with a default value indicating a number of rows toattempt to fetch at once. In one embodiment, the default value indicatesthat the control module 104 is to request the next 10 entries. Inembodiments utilizing such a batching mechanism, the control module 104will get one of the following: 1) a response containing the requestednumber of entries—or less—along with an indication of the number ofentries returned; optionally, the message format may contain an errorcode that will indicate the reason why a lower number of entries wasreturned than was requested (the most likely reason is that there werefewer rows available than were requested); or 2) no response. As withthe previous embodiment that requests one PMT entry 147 at a time,receiving no response may be preferred if there are no rows to provide.

A third embodiment for requesting unprocessed entries 148 of the PMT isto use a distributed shared memory (DSM) architecture. This may besupported by the operating system or another application running on thesystems involved. In these embodiments, the content of the forwardingdevice's PMT 120 is kept in a virtual shared memory space and shared byway of the coherency protocol utilized. Accordingly, no explicitmessaging is required. For this usage, a DSM architecture based on “weakconsistency” is sufficient, as it is not of long term importance if aforwarding device has over-written an entry that the control module 104is currently working on.

The method for selecting the approach for PMT entry 147 retrieval may begoverned by any reasonable policy. Ordering by most recently createdrows may make sense if there is a concern that older entries maycorrespond to flows that have completed. Ordering by using a “hitcounter” for each entry in the PMT 120 (which is incremented each timethe entry is re-written as a result of yet another packet matching thisPMT entry 147) is another approach.

Finally, any control module 104 implementation—knowing that a request isrequired in order to receive any flow information from the forwardingdevice—will periodically send a new request, even if it has received noentries for all recent requests. In this way, it is unnecessary for theforwarding device to send a response if there is nothing to send, and itis relatively unimportant that messages are delivered using a reliabledelivery mechanism (such as TCP).

In times of abnormal network load, the described embodiments permit thecontrol module 104 to regulate the pace at which it processes flows, butat the cost of timely reprogramming of the network forwarding path. Theexpectation is that in many cases the default actions of the CDRTentries may offer acceptable performance and the control module 104 isonly required to intervene in specific cases. Where there is latency inobtaining forwarding information from the data-plane, this informationmay have been augmented with additional telemetry on the current flowstate to allow the control module 104 to prioritize processing of theretrieved information. This could be in the form of a time that a lastpacket was received, a rate of receipt over a given time window, etc.,that would permit the control module 104 to determine the most effectiveactions it could take given the current network state and perceivedstate of the existing flow set.

The embodiments described herein offer substantial benefits compared tothe typical approaches provided in existing SDN technologies. Forexample, OpenFlow, for the worst-case, could send all packets to thecontrol module 104. While OpenFlow “Packet-In’ and “Packet-Out” messageswere designed to optimize buffer use, the use of these mechanismsfurther increases to the number of packets flowing in the network, aswell as the overhead associated with their use by the control module104.

Additionally, in networks where a certain amount of learning is neededat each network forwarding node after a transition, congestion inducedby slow-path packet processing (both on the controller and in thenetwork) can become severe when there is a transition—such as anaddition of a new node/failure of an existing node. The approach ofcertain embodiments of this invention reduces congestion on thecontroller, and therefore also reduces both loss of knowledge and wastedbandwidth when a network transition occurs. The controller pulls packetinformation at its own convenience, thereby avoiding congestion. Packetsare forwarded using default rules until the controller is able toprograms entries in each such device.

Another issue with potential approaches to dealing with this “learningprocess” is that—as a result of delay in the process—it is possible thatseveral similar packets may be forwarded to the controller. Repetitionof the packet information is an unnecessary burden on a data-plane andcontroller, and adds to congestion. The approach of embodiments of thisinvention further reduces the processing requirements imposed on thecontroller by avoiding sending multiple packet matching a given genericmatch criteria to the controller, in any given time period.

Additionally, the usual method for avoiding overload of the controlleris to simply disable such messaging for a new node—along with forwardingof any packets—until configuration of that node is complete. Theapproach in embodiments of this invention allows the forwarding deviceto be enabled with a partial configuration. Certain embodiments alsoallow the use of packet-based rule creation as a mechanism to help thecontroller—as well as any applicable third party software application—toprioritize remaining configuration tasks.

Also, slow path processing for causes delays for the first few packetsof a flow that will not be experienced by other packets. The approach ofembodiments of this invention also reduces the incidence of certainpotentially pathological networking events (such as out of orderdelivery of packets) by eliminating delay consequent to packetprocessing in the (slow path) control plane.

In a network that has nodes that support pushing the packet to thecontroller for processing, that controller does not have option todecide which nodes are important and hence give priority to a particularnode when receiving packet from the data-pane node. The approach ofembodiments of the invention allows for prioritization of packetprocessing from a given data-plane node. Since the controller is pullingthe information (instead of being pushed the information, as in theOpenFlow model) from the data plane, it can decide which node(s) itwants to gather information from first.

Moreover, in the described embodiments, there is no loss of knowledge aswould be implied by congestion and discard, as these techniques dealwith congestion via summarization and augmentation of information at thedata plane.

While the invention has been described in terms of several embodiments,those skilled in the art will recognize that the invention is notlimited to the embodiments described, and can be practiced withmodification and alteration within the spirit and scope of the appendedclaims. The description is thus to be regarded as illustrative insteadof limiting.

What is claimed is:
 1. A method performed by a network element acting asa forwarding plane within a software-defined network to reduce negativeeffects of slow-path packet processing, comprising: receiving, by thenetwork element, a first packet; determining whether the first packetmatches any flow entry within a set of one or more flow tables of thenetwork element, wherein the set of flow tables comprise a set of one ormore flow entries, each of the set of flow entries including a matchcriteria to be matched against a match portion of incoming packets and aset of one or more actions to be performed for packets having said matchportions matching the match criteria of that flow entry; responsive todetermining that the first packet does not match any flow entry withinthe set of flow tables, performing a miss procedure comprising:comparing the first packet to a set of one or more entries of aconfigurable default rule table (CDRT) by determining whether a matchportion of the first packet matches a CDRT match criteria from any ofthe set of entries, wherein each entry of the CDRT comprises the CDRTmatch criteria to be used to determine whether packets match that entry,and inserting at least a portion of the first packet as a first entry ina packet miss table (PMT), wherein the PMT stores portions of packetsreceived by the network element that did not match any flow entry of theset of flow tables; and providing, to a controller, access to the firstentry of the PMT upon the controller seeking said access.
 2. The methodof claim 1, wherein each entry of the CDRT further comprises a formatspecifier that indicates how to construct entries in the PMT for packetsthat match the entry.
 3. The method of claim 2, wherein the formatspecifier comprises a bitmap indicating which bytes from a matchingpacket are to be used to construct a new entry in the PMT for thematching packet.
 4. The method of claim 2, wherein the miss procedurefurther comprises: determining that the match portion of the firstpacket matches the CDRT match criteria of a first entry of the CDRT,wherein the portion of the first packet inserted as the first entry inthe PMT is determined by the format specifier of the first entry of theCDRT.
 5. The method of claim 4, wherein: each entry of the CDRT furthercomprises a set of one or more default actions to be performed forpackets that match the CDRT match criteria of that entry; and the missprocedure further comprises performing the set of default actions of thematched first entry of the CDRT, thereby causing the network element toperform forwarding of the first packet despite the first packet notmatching any flow entry of the set of flow tables.
 6. The method ofclaim 5, further comprising: responsive to receiving a set of one ormore CDRT modification messages from the controller, inserting a newCDRT entry into the CDRT based upon the set of CDRT modificationmessages.
 7. The method of claim 5, wherein at least some of the set ofentries of the CDRT are populated by the controller based upon afunctionality the network element is to provide in the software-definednetwork and are not based upon packets received by the network element.8. A method performed by a first network element acting as a controllerwithin a software-defined network to reduce negative effects ofslow-path packet processing, comprising: accessing unprocessed entriesof a packet miss table (PMT) of a second network element acting as aforwarding plane in the software-defined network, wherein each entry ofthe PMT stores portions of packets received by the second networkelement that did not match any entry within a set of one or more flowtables of the second network element, wherein the set of flow tablescomprise a set of one or more flow entries, each of the set of flowentries including a match criteria to be matched against a match portionof incoming packets and a set of one or more actions to be performed forpackets having the match portions that match the match criteria of theflow entry; and responsive to said accessing, causing the second networkelement to insert a set of one or more flow entries into one or more ofthe set of flow tables.
 9. The method of claim 8, wherein said accessingcomprises: transmitting, to the second network element, a pull entryrequest message indicating a pull request for the unprocessed entries ofthe PMT; and receiving, from the second network element, a pull entryresponse message including a set of one or more unprocessed entries ofthe PMT.
 10. The method of claim 8, wherein said causing comprises:transmitting, to the second network element, one or more flow entrymodification messages indicating a command to insert the set of flowentries into the one or more of the set of flow tables.
 11. The methodof claim 8, further comprising: determining a device type of the secondnetwork element; and transmitting, to the second network element, aconfigurable default rule table modification message to cause the secondnetwork element to configure a set of one or more entries in aconfigurable default rule table (CDRT), wherein the set of entries aredetermined based upon the determined device type, and wherein the secondnetwork element, upon receipt of a packet that does not match any flowentry of the set of flow tables, is thereby configured to: determinethat the packet matches a first CDRT entry of the CDRT entries, performa set of one or more default actions specified by the first CDRT entry,and insert at least a portion of the first packet as a first entry inthe PMT.
 12. A network element to act as a forwarding plane within asoftware-defined network (SDN) and reduce negative effects of slow-pathpacket processing, the network element comprising: a set of one or morephysical network interfaces configured to: receive packets to beforwarded, and provide, for a controller in the SDN, access tounprocessed entries of a packet miss table (PMT) upon the controllerseeking said access, wherein the PMT is to store portions of packetsreceived by the set of physical network interfaces that do not match anyflow entry of a set of one or more flow tables, wherein said set ofphysical network interfaces is to provide said access by beingconfigured to: receive, from the controller, pull entry request messagesthat indicate pull requests for the unprocessed entries of the PMT, andtransmit, to the controller, pull entry response messages that compriseone or more of said unprocessed entries of the PMT; and a packetprocessing module configured to: configure the set of one or more flowtables comprising a set of one or more flow entries, each of the set offlow entries including a match criteria to be matched against matchportions of incoming packets and a set of one or more actions to beperformed for packets having said match portions that match the matchcriteria of that flow entry, determine whether match portions ofreceived packets match the match criteria of any of the set of flowentries of the set of flow tables, and perform a miss procedure when areceived packet does not match any entry of the set of flow tables,wherein the miss procedure is one of: inserting at least a portion ofthe received packet as an entry of the PMT, and updating an existingentry of the PMT based upon the received packet.
 13. The network elementof claim 12, wherein the packet processing module is further configuredto: responsive to a receipt of a set of one or more flow entrymodification messages over one of the set of physical networkinterfaces, insert a flow entry into one of the set of flow tables, andmodify at least one entry of the PMT to be no longer unprocessed,wherein the set of flow entry modification messages is to indicate acommand to insert the flow entry into the one of the set of flow tables.14. The network element of claim 12, wherein the miss procedure furthercomprises: comparing the received packet to a set of one or more entriesof a configurable default rule table (CDRT) by determining whether amatch portion of the received packet matches a CDRT match criteria ofany of the set of entries, wherein each entry of the CDRT comprises theCDRT match criteria to be used to determine whether packets match thatentry.
 15. The network element of claim 14, wherein each entry of theCDRT further comprises a format specifier to indicate how to constructentries in the PMT for packets matching that entry.
 16. The networkelement of claim 14, wherein the packet processing module is furtherconfigured to, responsive a receipt of a set of one or more CDRTmodification messages from the controller over at least one of the setof physical network interfaces, insert a new entry into the CDRT basedon the set of CDRT modification messages.
 17. A network element to actas a controller within a software-defined network and reduce negativeeffects of slow-path packet processing, the network element comprising:a set of one or more physical network interfaces; and a control modulecoupled to the set of physical network interfaces and configured to:access unprocessed entries of a packet miss table (PMT) of a secondnetwork element acting as a forwarding plane in the software-definednetwork, wherein each entry of the PMT stores portions of packetsreceived by the second network element that did not match any entrywithin a set of one or more flow tables of the second network element,wherein the set of flow tables comprise a set of one or more flowentries, each of the set of flow entries to include a match criteria tobe matched against match portions of incoming packets and a set of oneor more actions to be performed for packets having said match portionsthat match the match criteria of that flow entry, and responsive to saidaccess of unprocessed entries of the PMT, transmit, to the secondnetwork element, one or more flow entry modification messages thatindicate a command to insert a set of one or more flow entries into oneor more of the set of flow tables.
 18. The network element of claim 17,wherein the control module is to access unprocessed entries of the PMTby being configured to: transmit pull entry request messages to thesecond network element, wherein each pull entry request message is toindicate a pull request for one or more unprocessed entries of the PMT;and receive pull entry response messages from the second networkelement, wherein each pull entry response message is to include a set ofone or more of the unprocessed entries of the PMT.
 19. The networkelement of claim 17, wherein the control module is further configuredto: determine a device type of the second network element; and utilizethe set of physical network interfaces to transmit, to the secondnetwork element, a configurable default rule table modification messageto cause the second network element to configure a set of one or moreentries in a configurable default rule table (CDRT), wherein the CDRTincludes default actions to be performed for received packets thatcannot be processed according to a set of flow tables, wherein the setof entries are determined based upon the determined device type, andwherein the second network element, upon receipt of a packet that doesnot match any flow entry of the set of flow tables, is configured to:determine whether the packet matches any CDRT entry of the set of CDRTentries, and responsive to determining that the packet matches a firstCDRT entry of the set of CDRT entries, perform a set of one or moredefault actions specified by the first CDRT entry, and insert at least aportion of the first packet as a first entry in the PMT or update anexisting entry of the PMT based upon the first packet.
 20. A methodperformed by a forwarding node within a software-defined network toreduce negative effects of slow-path packet processing, comprising:receiving, by the forwarding node, a first packet; determining whetherthe first packet matches any flow entry within a set of one or more flowtables of the forwarding node, wherein the set of flow tables comprise aset of one or more flow entries, each of the set of flow entriesincluding a match criteria to be matched against a match portion ofincoming packets and a set of one or more actions to be performed forpackets having said match portion that matches the match criteria;responsive to determining that the first packet does not match any flowentry within the set of flow tables, performing a miss procedurecomprising: inserting at least a portion of the first packet as a firstentry in a packet miss table (PMT), wherein the PMT stores portions ofpackets received by the forwarding node that did not match any flowentry of the set of flow tables; receiving a pull entry request messagefrom a controller indicating a pull request for one or more unprocessedentries of the PMT; and responsive to the receiving of the pull entryrequest message, transmitting a pull entry response message to thecontroller, the pull entry response message comprising the first entryof the PMT.
 21. A method performed by a controller executing on a serverwithin a software-defined network to reduce negative effects ofslow-path packet processing, comprising: transmitting, to a forwardingnode in the software-defined network, a pull entry request messageindicating a pull request for one or more unprocessed entries of apacket miss table (PMT), wherein each entry of the PMT stores portionsof packets received by the forwarding node that did not match any entrywithin a set of one or more flow tables of the forwarding node, whereinthe set of flow tables comprises a set of one or more flow entries, eachof the set of flow entries including a match criteria to be matchedagainst a match portion of incoming packets and a set of one or moreactions to be performed for packets having the match portion thatmatches the match criteria of that flow entry; receiving, from theforwarding node, a pull entry response message including a set of one ormore unprocessed entries of the PMT; and responsive to receipt of thepull entry response message, transmitting, to the forwarding node, oneor more flow entry modification message indicating a command to insert aset of one or more flow entries into one or more of the set of flowtables.
 22. A method performed by a network element acting as aforwarding plane within a software-defined network to reduce negativeeffects of slow-path packet processing, comprising: receiving, by thenetwork element, a first packet; determining whether the first packetmatches any flow entry within a set of one or more flow tables of thenetwork element, wherein the set of flow tables comprise a set of one ormore flow entries, each of the set of flow entries including a matchcriteria to be matched against a match portion of incoming packets and aset of one or more actions to be performed for packets having said matchportions matching the match criteria of that flow entry; responsive todetermining that the first packet does not match any flow entry withinthe set of flow tables, performing a miss procedure comprising:inserting at least a portion of the first packet as a first entry in apacket miss table (PMT), wherein the PMT stores portions of packetsreceived by the network element that did not match any flow entry of theset of flow tables; and providing, to a controller, access to the firstentry of the PMT upon the controller seeking said access, wherein thecontroller seeking said access comprises the network element receiving,from the controller, a pull entry request message indicating a requestfor one or more unprocessed entries of the PMT, and providing saidaccess to the first entry comprises transmitting a pull entry responsemessage to the controller, the pull entry response message comprisingthe first entry of the PMT.
 23. The method of claim 22, wherein the pullentry response message transmitted to the controller further comprises asecond entry of the PMT.
 24. A method performed by a network elementacting as a forwarding plane within a software-defined network to reducenegative effects of slow-path packet processing, comprising: receiving,by the network element, a first packet; determining whether the firstpacket matches any flow entry within a set of one or more flow tables ofthe network element, wherein the set of flow tables comprise a set ofone or more flow entries, each of the set of flow entries including amatch criteria to be matched against a match portion of incoming packetsand a set of one or more actions to be performed for packets having saidmatch portions matching the match criteria of that flow entry;responsive to determining that the first packet does not match any flowentry within the set of flow tables, performing a miss procedurecomprising: inserting at least a portion of the first packet as a firstentry in a packet miss table (PMT), wherein the PMT stores portions ofpackets received by the network element that did not match any flowentry of the set of flow tables; providing, to a controller, access tothe first entry of the PMT upon the controller seeking said access;receiving, from the controller, one or more flow entry modificationmessages indicating a command to insert a first flow entry into one ofthe set of flow tables; inserting the first flow entry into the one ofthe set of flow tables, wherein the match criteria of the first flowentry matches a match portion of the first packet; and modifying thefirst entry of the PMT to be no longer unprocessed.